Use 'revert-function' in *xref* buffer
authorEshel Yaron <me@eshelyaron.com>
Wed, 26 Jun 2024 16:51:32 +0000 (18:51 +0200)
committerEshel Yaron <me@eshelyaron.com>
Wed, 26 Jun 2024 20:59:42 +0000 (22:59 +0200)
* lisp/progmodes/xref.el (xref--xref-buffer-mode-map): Cease
binding 'g' to 'xref-revert-buffer'.
(xref--xref-buffer-mode): Set 'revert-buffer-function' to...
(xref--revert-buffer): ...this.  New function, renamed from...
(xref-revert-buffer): ...this.  Make it an alias of
'revert-buffer'.
* etc/NEWS: Announce it.
* doc/emacs/maintaining.texi (Xref Commands): Update docs.

doc/emacs/maintaining.texi
etc/NEWS
lisp/progmodes/xref.el

index 3a9bef9884a2920c515082c3e20dc34d39835f6d..64d77fb88a55c43d4997c72092e812748bc62788 100644 (file)
@@ -2466,10 +2466,10 @@ the match with @var{replacement}.  This command can only be used in
 @file{*xref*} buffers that show all the matches for an identifier in
 all the relevant files.  @xref{Identifier Search}.
 
+@cindex revert-buffer, in @file{*xref*} buffers
 @item g
-@findex xref-revert-buffer
-Refresh the contents of the @file{*xref*} buffer
-(@code{xref-revert-buffer}).
+Refresh the contents of the @file{*xref*} buffer (@code{revert-buffer}).
+@xref{Reverting}.
 
 @item M-,
 @findex xref-quit-and-pop-marker-stack
index 716eb612720a2cdbfc5e1ad3e976921e4c179c40..8d360063f7ac11f34881c5b7bdfa530d3fc6ad74 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1916,6 +1916,13 @@ the 'widget-inactive' face).
 If non-nil, moving point forward or backward between widgets by typing
 'TAB' or 'S-TAB' skips over inactive widgets.  The default value is nil.
 
+** Xref
+
+*** 'xref-revert-buffer' is now an alias of 'revert-buffer'.
+The Xref buffer now sets up 'revert-buffer-function' such that
+'revert-buffer' behaves like 'xref-revert-buffer' did in previous Emacs
+versions, and the latter is now an alias of the former.
+
 ** Ruby mode
 
 *** New user option 'ruby-rubocop-use-bundler'.
index fb6c9dad73b320757f35a7aff4ecdc49b118245b..0b0699414386728439427d9011b04dda53b74340 100644 (file)
@@ -993,7 +993,6 @@ point."
     ;; suggested by Johan Claesson "to further reduce finger movement":
     (define-key map (kbd ".") #'xref-next-line)
     (define-key map (kbd ",") #'xref-prev-line)
-    (define-key map (kbd "g") #'xref-revert-buffer)
     (define-key map (kbd "M-,") #'xref-quit-and-pop-marker-stack)
     map))
 
@@ -1011,6 +1010,7 @@ point."
         #'xref--imenu-extract-index-name)
   (setq-local add-log-current-defun-function
               #'xref--add-log-current-defun)
+  (setq-local revert-buffer-function #'xref--revert-buffer)
   (setq-local outline-minor-mode-cycle t)
   (setq-local outline-minor-mode-use-buttons 'insert)
   (setq-local outline-search-function
@@ -1273,22 +1273,16 @@ Return an alist of the form ((GROUP . (XREF ...)) ...)."
           xref--original-window-intent (assoc-default 'display-action alist))
     (setq xref--fetcher fetcher)))
 
-(defun xref-revert-buffer ()
+(defun xref--revert-buffer (&rest _)    ; Ignore `revert-buffer' args.
   "Refresh the search results in the current buffer."
-  (interactive)
   (let ((inhibit-read-only t)
-        (buffer-undo-list t)
-        restore-functions)
-    (when (boundp 'revert-buffer-restore-functions)
-      (run-hook-wrapped 'revert-buffer-restore-functions
-                        (lambda (f) (push (funcall f) restore-functions) nil)))
+        (buffer-undo-list t))
     (save-excursion
       (condition-case err
           (let ((alist (xref--analyze (funcall xref--fetcher)))
                 (inhibit-modification-hooks t))
             (erase-buffer)
-            (prog1 (xref--insert-xrefs alist)
-              (mapc #'funcall (delq nil restore-functions))))
+            (xref--insert-xrefs alist))
         (user-error
          (erase-buffer)
          (insert
@@ -1296,6 +1290,9 @@ Return an alist of the form ((GROUP . (XREF ...)) ...)."
            (error-message-string err)
            'face 'error)))))))
 
+;;; FIXME: Make this alias obsolete in future release.
+(defalias 'xref-revert-buffer #'revert-buffer)
+
 (defun xref--auto-jump-first (buf value)
   (when value
     (select-window (get-buffer-window buf))